/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Negocio.UI;

import Datos.ResultSetTable;
import Interfaz.FRBailarinas;
import Interfaz.FRCuenta;
import Interfaz.FRInfoCuentas;
import Interfaz.FRMesas;
import Interfaz.FROrden;
import Interfaz.FRPrincipal;
import Interfaz.FRProductos;
import Interfaz.FRReportes;
import Interfaz.FRSaloneros;
import Negocio.Administrador.Administrador;
import java.awt.Color;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.GroupLayout.ParallelGroup;
import javax.swing.GroupLayout.SequentialGroup;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 *
 * @author Marco
 */
public class UIPuntoVenta {

    private Administrador administrador = new Administrador();
    private static UIPuntoVenta uiPuntoVenta = null;
    private FRPrincipal frPrincipal;
    private FRBailarinas frBailarinas;
    private FRProductos frProductos;
    private FRSaloneros frSaloneros;
    private FRMesas frMesas;
    private FRInfoCuentas frInfoCuentas;
    private FRCuenta frCuenta;
    private FROrden frOrden;
    private FRReportes frReportes;
    private final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
    
    private UIPuntoVenta() {
    }

    public FRBailarinas getFrBailarinas() {
        return frBailarinas;
    }

    public void setFrBailarinas(FRBailarinas frBailarinas) {
        this.frBailarinas = frBailarinas;
    }

    public FRMesas getFrMesas() {
        return frMesas;
    }

    public void setFrMesas(FRMesas frMesas) {
        this.frMesas = frMesas;
    }

    public FRPrincipal getFrPrincipal() {
        return frPrincipal;
    }

    public void setFrPrincipal(FRPrincipal frPrincipal) {
        this.frPrincipal = frPrincipal;
    }

    public FRProductos getFrProductos() {
        return frProductos;
    }

    public void setFrProductos(FRProductos frProductos) {
        this.frProductos = frProductos;
    }

    public FRSaloneros getFrSaloneros() {
        return frSaloneros;
    }

    public void setFrSaloneros(FRSaloneros frSaloneros) {
        this.frSaloneros = frSaloneros;
    }

    public static UIPuntoVenta getUiPuntoVenta() {
        return uiPuntoVenta;
    }

    public static void setUiPuntoVenta(UIPuntoVenta uiPuntoVenta) {
        UIPuntoVenta.uiPuntoVenta = uiPuntoVenta;
    }


    public static UIPuntoVenta getInstancia(){
        if(uiPuntoVenta == null){
            uiPuntoVenta = new UIPuntoVenta();
        }
        return uiPuntoVenta;

    }

    public UIPuntoVenta(Administrador administrador) {
        this.administrador = administrador;
    }

    public Administrador getAdministrador() {
        return administrador;
    }

    public void setAdministrador(Administrador administrador) {
        this.administrador = administrador;
    }

    public void conectar() {
        administrador.conectar();
    }

    public void iniciar(FRPrincipal ventana) {
        setFrPrincipal(ventana);

        frReportes = new FRReportes();
        frReportes.setVisible(false);

        frCuenta = new FRCuenta();
        frCuenta.setVisible(false);
        
        frBailarinas = new FRBailarinas();
        frBailarinas.setVisible(false);

        frProductos = new FRProductos();
        frProductos.setVisible(false);

        frSaloneros = new FRSaloneros();
        frSaloneros.setVisible(false);

        frMesas = new FRMesas();
        frMesas.setVisible(false);

        frInfoCuentas = new FRInfoCuentas();
        frInfoCuentas.setVisible(false);

        frOrden = new FROrden();
        frOrden.setVisible(false);

        conectar();

        cargarBailarinas();
        cargarProductos();
        cargarSaloneros();
        cargarMesas();
        cargarProductos();
    }

    public void frameBailarinas() {
        frBailarinas.setVisible(true);
        frPrincipal.setVisible(false);
    }

    public void frameProductos() {
        frProductos.setVisible(true);
        frPrincipal.setVisible(false);
    }

    public void frameSaloneros() {
        frSaloneros.setVisible(true);
        frPrincipal.setVisible(false);
    }

    public void frameMesas() {
        frMesas.setVisible(true);
        frPrincipal.setVisible(false);
    }

    public void framePrincipalMesas() {
        frMesas.setVisible(false);
        frPrincipal.setVisible(true);
    }

    public void framePrincipalProductos() {
        frProductos.setVisible(false);
        frPrincipal.setVisible(true);
    }

    public void framePrincipalSaloneros() {
        frSaloneros.setVisible(false);
        frPrincipal.setVisible(true);
    }

    public void framePrincipalBailarinas() {
        frBailarinas.setVisible(false);
        frPrincipal.setVisible(true);
    }

    //-----------------------------INICIO DE BAILARINAS-----------------------------//

    public void insertarBailarina() {
        try{
        String nombreArtistico = frBailarinas.getTxtNombreArt().getText();
        int cedula = Integer.parseInt(frBailarinas.getTxtCedula().getText());
        String nombreReal = frBailarinas.getTxtNombreReal().getText();
        int edad = Integer.parseInt(frBailarinas.getTxtEdad().getText());
        int telefono = Integer.parseInt(frBailarinas.getTxtTelefono().getText());
        String direccion = frBailarinas.getTxtDireccion().getText();
        if(administrador.insertarBailarina(nombreArtistico, cedula, nombreReal, edad, telefono, direccion, frBailarinas.getListaBailarinas(), frOrden.getLsBailarinasOrden()))
           frBailarinas.getTextArea().setText("Bailarina Agregada.");
        else
           frBailarinas.getTextArea().setText("Bailarina NO Agregada. \nInténtelo de nuevo más tarde");
        }catch(NumberFormatException e){
            frBailarinas.getTextArea().setText("Bailarina NO Agregada. \nNúmero de cédula, edad y teléfono\n deben ser numéricos");
        }
    }

    public void cargarBailarinas() {
        administrador.cargarDatosBailarinas(frBailarinas.getListaBailarinas(), frOrden.getLsBailarinasOrden());
    }

    public void eliminarBailarina() {
        String objetoBailarina = "";
        objetoBailarina = (String) frBailarinas.getListaBailarinas().getSelectedValue();
        try {
            if (!objetoBailarina.equals("")) {
                String objetoSplit[] = objetoBailarina.split("-");
                int idBailarina = Integer.parseInt(objetoSplit[0]);
                if (administrador.eliminarBailarina(idBailarina, frBailarinas.getListaBailarinas(), frOrden.getLsBailarinasOrden())) {
                    frBailarinas.getTextArea().setText("Bailarina Eliminada.");
                } else {
                    frBailarinas.getTextArea().setText("Bailarina NO Eliminada. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {
        }
    }

    public void modificarBailarina() {
        String objetoBailarina = "";
        objetoBailarina = (String) frBailarinas.getListaBailarinas().getSelectedValue();
        try {
            if (!objetoBailarina.equals("")) {
            String objetoSplit[] = objetoBailarina.split("-");
                int idBailarina = Integer.parseInt(objetoSplit[0]);
                String nombreArtistico = frBailarinas.getTxtNombreArt().getText();
                int cedula = Integer.parseInt(frBailarinas.getTxtCedula().getText());
                String nombreReal = frBailarinas.getTxtNombreReal().getText();
                int edad = Integer.parseInt(frBailarinas.getTxtEdad().getText());
                int telefono = Integer.parseInt(frBailarinas.getTxtTelefono().getText());
                String direccion = frBailarinas.getTxtDireccion().getText();
                if (administrador.modificarBailarina(idBailarina, nombreArtistico, cedula, nombreReal, edad, telefono, direccion, frBailarinas.getListaBailarinas(), frOrden.getLsBailarinasOrden())) {
                    frBailarinas.getTextArea().setText("Bailarina Modificada.");
                } else {
                    frBailarinas.getTextArea().setText("Bailarina NO Modificada. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {

        }
    }

    public void bailarinaSeleccionada() {
        String objetoBailarina = "";
        objetoBailarina = (String) frBailarinas.getListaBailarinas().getSelectedValue();
        try{
        if (!objetoBailarina.equals("")) {
            String objetoSplit[] = objetoBailarina.split("-");
            int idBailarina = Integer.parseInt(objetoSplit[0]);
            String info[] = administrador.bailarinaSeleccionada(idBailarina);
            frBailarinas.getTxtNombreArt().setText(info[1]);
            frBailarinas.getTxtCedula().setText(info[2]);
            frBailarinas.getTxtNombreReal().setText(info[3]);
            frBailarinas.getTxtEdad().setText(info[4]);
            frBailarinas.getTxtTelefono().setText(info[5]);
            frBailarinas.getTxtDireccion().setText(info[6]);
        }
        } catch (Exception e) {

        }
    }

    public void limpiarInfoBailarinas(FRBailarinas ventana) {
        ventana.getTxtCedula().setText("");
        ventana.getTxtDireccion().setText("");
        ventana.getTxtEdad().setText("");
        ventana.getTxtNombreReal().setText("");
        ventana.getTxtNombreArt().setText("");
        ventana.getTxtTelefono().setText("");
    }

    //-----------------------------FINAL DE BAILARINAS-----------------------------//

    //-----------------------------INICIO DE SALONEROS-----------------------------//

    public void insertarSalonero() {
        try{
        String nombre = frSaloneros.getTxtNombre().getText();
        int cedula = Integer.parseInt(frSaloneros.getTxtCedula().getText());
        int edad = Integer.parseInt(frSaloneros.getTxtEdad().getText());
        int telefono = Integer.parseInt(frSaloneros.getTxtTelefono().getText());
        String direccion = frSaloneros.getTxtDireccion().getText();
        if(administrador.insertarSalonero(nombre, cedula, edad, telefono, direccion, frSaloneros.getListaSaloneros(), frOrden.getLsSalonerosOrden()))
           frSaloneros.getTextArea().setText("Salonero Agregado.");
        else
           frSaloneros.getTextArea().setText("Salonero NO Agregado. \nInténtelo de nuevo más tarde");
        }catch(NumberFormatException e){
            frSaloneros.getTextArea().setText("Salonero NO Agregado. \nNúmero de cédula, edad y teléfono\n deben ser numéricos");
        }
    }

    public void cargarSaloneros() {
        administrador.cargarDatosSaloneros(frSaloneros.getListaSaloneros(), frOrden.getLsSalonerosOrden());
    }

    public void eliminarSalonero() {
        String objetoSalonero = "";
        objetoSalonero = (String) frSaloneros.getListaSaloneros().getSelectedValue();
        try {
            if (!objetoSalonero.equals("")) {
                String objetoSplit[] = objetoSalonero.split("-");
                int idSalonero = Integer.parseInt(objetoSplit[0]);
                if (administrador.eliminarSalonero(idSalonero, frSaloneros.getListaSaloneros(), frOrden.getLsSalonerosOrden())) {
                    frSaloneros.getTextArea().setText("Salonero Eliminado.");
                } else {
                    frSaloneros.getTextArea().setText("Salonero NO Eliminado. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {
        }
    }

    public void modificarSalonero() {
        String objetoSalonero = "";
        objetoSalonero = (String) frSaloneros.getListaSaloneros().getSelectedValue();
        try {
            if (!objetoSalonero.equals("")) {
            String objetoSplit[] = objetoSalonero.split("-");
                int idSalonero = Integer.parseInt(objetoSplit[0]);
                String nombre = frSaloneros.getTxtNombre().getText();
                int cedula = Integer.parseInt(frSaloneros.getTxtCedula().getText());
                int edad = Integer.parseInt(frSaloneros.getTxtEdad().getText());
                int telefono = Integer.parseInt(frSaloneros.getTxtTelefono().getText());
                String direccion = frSaloneros.getTxtDireccion().getText();
                if (administrador.modificarSalonero(idSalonero, nombre, cedula, edad, telefono, direccion, frSaloneros.getListaSaloneros(), frOrden.getLsSalonerosOrden())) {
                    frSaloneros.getTextArea().setText("Salonero Modificado.");
                } else {
                    frSaloneros.getTextArea().setText("Salonero NO Modificado. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {

        }
    }

    public void saloneroSeleccionado() {
        String objetoSalonero = "";
        objetoSalonero = (String) frSaloneros.getListaSaloneros().getSelectedValue();
        try{
        if (!objetoSalonero.equals("")) {
            String objetoSplit[] = objetoSalonero.split("-");
            int idSalonero = Integer.parseInt(objetoSplit[0]);
            String info[] = administrador.saloneroSeleccionado(idSalonero);
            frSaloneros.getTxtNombre().setText(info[1]);
            frSaloneros.getTxtCedula().setText(info[2]);
            frSaloneros.getTxtEdad().setText(info[3]);
            frSaloneros.getTxtTelefono().setText(info[4]);
            frSaloneros.getTxtDireccion().setText(info[5]);
        }
        } catch (Exception e) {

        }
    }
    
    public void limpiarInfoSaloneros(FRSaloneros ventana) {
        ventana.getTxtCedula().setText("");
        ventana.getTxtDireccion().setText("");
        ventana.getTxtEdad().setText("");
        ventana.getTxtNombre().setText("");
        ventana.getTxtTelefono().setText("");
    }


    //-----------------------------FINAL DE SALONEROS-----------------------------//

    //-----------------------------INICIO DE PRODUCTOS-----------------------------//

    public void insertarProducto() {
        try{
        String nombre = frProductos.getTxtNombre().getText();
        double costo = Double.parseDouble(frProductos.getTxtPrecio().getText());
        double comisionBailarina = Double.parseDouble(frProductos.getTxtComBailarina().getText());
        if(administrador.insertarProducto(nombre,costo,comisionBailarina, frProductos.getListaProductos())){
           frProductos.getTextArea().setText("Producto Agregado.");
           cargarProductos();
        } else
           frProductos.getTextArea().setText("Producto NO Agregado. \nInténtelo de nuevo más tarde");
        }catch(NumberFormatException e){
            frProductos.getTextArea().setText("Producto NO Agregado. \nPrecio y comision deben de ser numérico");
        }
    }

    public void cargarProductos() {
        int tamano = administrador.cargarDatosProductos(frProductos.getListaProductos());
        if(tamano > 0){
            asignarBotonesProducto(tamano);
            generarBotonesProductos();
        }
    }

    public void eliminarProducto() {
        String objetoProducto = "";
        objetoProducto = (String) frProductos.getListaProductos().getSelectedValue();
        try {
            if (!objetoProducto.equals("")) {
                String objetoSplit[] = objetoProducto.split("-");
                int codigo = Integer.parseInt(objetoSplit[0]);
                if (administrador.eliminarProducto(codigo, frProductos.getListaProductos())) {
                    frProductos.getTextArea().setText("Producto Eliminado.");
                    cargarProductos();
                } else {
                    frProductos.getTextArea().setText("Producto NO Eliminado. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {
        }
    }

    public void modificarProducto() {
        String objetoProducto = "";
        objetoProducto = (String) frProductos.getListaProductos().getSelectedValue();
        try {
            if (!objetoProducto.equals("")) {
            String objetoSplit[] = objetoProducto.split("-");
                int codigo = Integer.parseInt(objetoSplit[0]);
                String nombre = frProductos.getTxtNombre().getText();
                double costo = Double.parseDouble(frProductos.getTxtPrecio().getText());
                double comisionBailarina = Double.parseDouble(frProductos.getTxtComBailarina().getText());
                if (administrador.modificarProducto(codigo, nombre, costo, comisionBailarina, frProductos.getListaProductos())) {
                    frProductos.getTextArea().setText("Producto Modificado.");
                    cargarProductos();
                } else {
                    frProductos.getTextArea().setText("Producto NO Modificado. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {

        }
    }

    public void productoSeleccionado() {
        String objetoProducto = "";
        objetoProducto = (String) frProductos.getListaProductos().getSelectedValue();
        try{
        if (!objetoProducto.equals("")) {
            String objetoSplit[] = objetoProducto.split("-");
            int codigo = Integer.parseInt(objetoSplit[0]);
            String info[] = administrador.productoSeleccionado(codigo);
            frProductos.getTxtNombre().setText(info[1]);
            frProductos.getTxtPrecio().setText(info[2]);
        }
        } catch (Exception e) {

        }
    }

    public void generarBotonesProductos() {
        frCuenta.getPnlBotonesProductos().removeAll();
        javax.swing.GroupLayout pnlProductosLayout = new javax.swing.GroupLayout( frCuenta.getPnlBotonesProductos());
        frCuenta.getPnlBotonesProductos().setLayout(pnlProductosLayout);
        ParallelGroup parallelGroupPrincipal = pnlProductosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        SequentialGroup sGPnl = pnlProductosLayout.createSequentialGroup();
        sGPnl.addContainerGap();
        sGPnl.addGroup(administrador.parallelGroupHorizontalProductos(pnlProductosLayout));
        sGPnl.addContainerGap(14, Short.MAX_VALUE);
        parallelGroupPrincipal.addGroup(sGPnl);
        pnlProductosLayout.setHorizontalGroup(parallelGroupPrincipal);

        ParallelGroup parallelGroupVertical = pnlProductosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        SequentialGroup seqGroup = pnlProductosLayout.createSequentialGroup();
        seqGroup.addContainerGap();
        seqGroup = (SequentialGroup) administrador.parallelGroupVerticalProductos(pnlProductosLayout, seqGroup);
        seqGroup.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
        parallelGroupVertical.addGroup(seqGroup);
        pnlProductosLayout.setVerticalGroup(parallelGroupVertical);
    }

    public javax.swing.JButton crearBotonProducto() {
        javax.swing.JButton botonEnOrdenes = new javax.swing.JButton();
        botonEnOrdenes.setBackground(new java.awt.Color(255, 255, 255));
        botonEnOrdenes.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        botonEnOrdenes.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 153, 0), 2, true));

        botonEnOrdenes.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonProductoEnFrameActionPerformed(evt);
            }
        });
        return botonEnOrdenes;
    }

    private void botonProductoEnFrameActionPerformed(java.awt.event.ActionEvent evt) {
        String separaStrIgual[] = evt.toString().split("=");
        String separaStrGuion[] = separaStrIgual[1].split("-");
        int nProducto = Integer.parseInt(separaStrGuion[0]);
        frOrden.getLblNumProducto().setText(""+nProducto);
        frOrden.setVisible(true);   
    }

    private void asignarBotonesProducto(int cantidad){
        javax.swing.JButton botones [] = new javax.swing.JButton[cantidad];
        for (int i = 0; i < botones.length; i++) {
            botones[i] = crearBotonProducto();
        }
        administrador.asignarBotonesProductos(botones);
    }

    public void limpiarInfoProductos(FRProductos ventana) {
        ventana.getTxtNombre().setText("");
        ventana.getTxtPrecio().setText("");
    }
    
    //-----------------------------FINAL DE PRODUCTOS-----------------------------//

    //-----------------------------INICIO DE MESAS-----------------------------//

    public void generarBotonesMesas() {
        frMesas.getPnlMesas().removeAll();
        javax.swing.GroupLayout pnlMesasLayout = new javax.swing.GroupLayout( frMesas.getPnlMesas());
        frMesas.getPnlMesas().setLayout(pnlMesasLayout);
        ParallelGroup parallelGroupPrincipal = pnlMesasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        SequentialGroup sGPnl = pnlMesasLayout.createSequentialGroup();
        sGPnl.addContainerGap();
        sGPnl.addGroup(administrador.parallelGroupHorizontal(pnlMesasLayout));
        sGPnl.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
        parallelGroupPrincipal.addGroup(sGPnl);
        pnlMesasLayout.setHorizontalGroup(parallelGroupPrincipal);

        ParallelGroup parallelGroupVertical = pnlMesasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        SequentialGroup seqGroup = pnlMesasLayout.createSequentialGroup();
        seqGroup.addContainerGap();
        seqGroup = (SequentialGroup) administrador.parallelGroupVertical(pnlMesasLayout, seqGroup);
        seqGroup.addContainerGap(287, Short.MAX_VALUE);
        parallelGroupVertical.addGroup(seqGroup);
        pnlMesasLayout.setVerticalGroup(parallelGroupVertical);
    }

    public void cargarMesas() {
        int tamano = administrador.cargarMesas();
        if(tamano > 0){
            asignarBotones(tamano);
            generarBotonesMesas();
        }
    }

    public void agregarMesa() {
        try {
            int capacidad = 0;

            int numMesa = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el número de mesa a agregar:\n", "", JOptionPane.INFORMATION_MESSAGE));
            if (administrador.mesaExiste(numMesa))
            {
                JOptionPane.showMessageDialog(null, "No se puede repetir número de mesa.", "", JOptionPane.ERROR_MESSAGE);
            } else
                capacidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite la capacidad de la mesa a agregar:\n", "", JOptionPane.INFORMATION_MESSAGE));
                if (capacidad < 1) {
                    JOptionPane.showMessageDialog(null, "Debe ingresar un valor mayor o igual a 1.", "", JOptionPane.ERROR_MESSAGE);
                } else
                    if (administrador.insertarMesa(numMesa, capacidad, crearBotonMesa())) {
                    JOptionPane.showMessageDialog(null, "Mesa agregada satisfactoriamente.", "", JOptionPane.INFORMATION_MESSAGE);
                    cargarMesas();
                } else {
                    JOptionPane.showMessageDialog(null, "Ha ocurrido un error. Mesa NO agregada.", "", JOptionPane.ERROR_MESSAGE);
                }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Debe ingresar un valor numerico", "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void eliminarMesa() {
        int numMesa = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese el número de mesa que desea eliminar","",JOptionPane.INFORMATION_MESSAGE));
        if(administrador.eliminarMesa(numMesa)){
            administrador.eliminarCuentasActivasMesa(numMesa);
            JOptionPane.showMessageDialog(null,"Mesa eliminada con éxito","",JOptionPane.INFORMATION_MESSAGE);
            cargarMesas();
        } else
            JOptionPane.showMessageDialog(null,"Error: la mesa especificada no existe actualmente","",JOptionPane.INFORMATION_MESSAGE);
    }

    public javax.swing.JButton crearBotonMesa() {
        javax.swing.JButton botonEnFrame = new javax.swing.JButton();
        botonEnFrame.setBackground(new java.awt.Color(255, 255, 255));
        botonEnFrame.setFont(new java.awt.Font("Microsoft JhengHei", 0, 18)); // NOI18N
        botonEnFrame.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(51, 102, 255), 2, true));
        botonEnFrame.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonMesaEnFrameActionPerformed(evt);
            }
        });
        return botonEnFrame;
    }

    private void asignarBotones(int cantidad){
        javax.swing.JButton botones [] = new javax.swing.JButton[cantidad];
        for (int i = 0; i < botones.length; i++) {
            botones[i] = crearBotonMesa();        
        }
        administrador.asignarBotones(botones);
    }

    private void botonMesaEnFrameActionPerformed(java.awt.event.ActionEvent evt) {
        String separaStrGato[] = evt.toString().split("#");
        String separaStrComa[] = separaStrGato[1].split(",");
        int idMesa = Integer.parseInt(separaStrComa[0]);
        frInfoCuentas.getLblNoMesa().setText(""+idMesa);
        cargarCuentas(idMesa);
        frMesas.setVisible(false);
        frInfoCuentas.setVisible(true);
    }

    public void frameMesasCuentas() {
        frMesas.setVisible(true);
        frInfoCuentas.setVisible(false);
    }

    //-----------------------------FINAL DE MESAS-----------------------------//

    //-----------------------------INICIO DE CUENTAS-----------------------------//

    public void cargarCuentas(int idMesa) {
        administrador.cargarDatosCuenta(frInfoCuentas.getLsCuentasActivas(), idMesa);
    }

    public void agregarCuenta() {
       try{
       int mesa = Integer.parseInt(frInfoCuentas.getLblNoMesa().getText());
       String nombreCliente = frInfoCuentas.getTxtNombreCliente().getText();
       int numeroPersonas = Integer.parseInt(frInfoCuentas.getTxtNumeroPersonas().getText());
       if(numeroPersonas < 1)
          JOptionPane.showMessageDialog(null, "Debe ingresar un valor mayor o igual a 1.", "", JOptionPane.ERROR_MESSAGE);
       else if (administrador.insertarCuenta(mesa, nombreCliente, numeroPersonas, frInfoCuentas.getLsCuentasActivas())) {
                JOptionPane.showMessageDialog(null, "Cuenta agregada satisfactoriamente.", "", JOptionPane.INFORMATION_MESSAGE);
                cargarMesas();
            } else {
                JOptionPane.showMessageDialog(null, "Ha ocurrido un error. Mesa NO agregada.", "", JOptionPane.ERROR_MESSAGE);
            }
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Debe ingresar un valor numerico", "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void eliminarCuenta() {
        String objetoCuenta = "";
        objetoCuenta = (String) frInfoCuentas.getLsCuentasActivas().getSelectedValue();
        try {
            if (!objetoCuenta.equals("")) {
                String objetoSplit[] = objetoCuenta.split("-");
                int idCuenta = Integer.parseInt(objetoSplit[0]);
                if (administrador.eliminarCuenta(idCuenta, frInfoCuentas.getLsCuentasActivas(), Integer.parseInt(frInfoCuentas.getLblNoMesa().getText()))) {
                   frInfoCuentas.getTxtAreaNotificaciones().setText("Cuenta eliminada.");
                } else {
                    frInfoCuentas.getTxtAreaNotificaciones().setText("ERROR. Cuenta NO eliminada.");
                }
            }
        } catch (Exception e) {
        }
    }

    public void modificarCuenta() {
        String objetoCuenta = "";
        objetoCuenta = (String) frInfoCuentas.getLsCuentasActivas().getSelectedValue();
        try {
            if (!objetoCuenta.equals("")) {
                String objetoSplit[] = objetoCuenta.split("-");
                int idCuenta = Integer.parseInt(objetoSplit[0]);
                int mesa = Integer.parseInt(frInfoCuentas.getLblNoMesa().getText());
                String nombreCliente = frInfoCuentas.getTxtNombreCliente().getText();
                int numeroPersonas = Integer.parseInt(frInfoCuentas.getTxtNumeroPersonas().getText());
                if(numeroPersonas < 1)
                     JOptionPane.showMessageDialog(null, "Debe ingresar un valor mayor o igual a 1.", "", JOptionPane.ERROR_MESSAGE);
                else if (administrador.modificarCuenta(idCuenta, mesa, nombreCliente, numeroPersonas, frInfoCuentas.getLsCuentasActivas())) {
                    frInfoCuentas.getTxtAreaNotificaciones().setText("Cuenta Modificada.");
                } else {
                   frInfoCuentas.getTxtAreaNotificaciones().setText("Cuenta NO Modificada. \nInténtelo de nuevo más tarde");
                }
            }
        } catch (Exception e) {
        }
    }

    public void cuentaSeleccionada() {
        String objetoCuenta = "";
        objetoCuenta = (String) frInfoCuentas.getLsCuentasActivas().getSelectedValue();
        try{
        if (!objetoCuenta.equals("")) {
            String objetoSplit[] = objetoCuenta.split("-");
            int idCuenta = Integer.parseInt(objetoSplit[0]);
            String info[] = administrador.cuentaSeleccionada(idCuenta);
            frInfoCuentas.getLblNoCuenta().setText(info[0]);
            frInfoCuentas.getTxtNombreCliente().setText(info[2]);
            frInfoCuentas.getTxtNumeroPersonas().setText(info[4]);
        }
        } catch (Exception ex) {

        }
    }

    public void frameCuentaOrdenes() {
        String objetoCuenta = "";
        objetoCuenta = (String) frInfoCuentas.getLsCuentasActivas().getSelectedValue();
        try{
        if (!objetoCuenta.equals("")) {
            String objetoSplit[] = objetoCuenta.split("-");
            int idCuenta = Integer.parseInt(objetoSplit[0]);
            String info[] = administrador.cuentaSeleccionada(idCuenta);
            frCuenta.getLblNumFac().setText(info[0]);
            frCuenta.getLblCliente().setText(info[2]);
            frCuenta.getLblNumMesa().setText(info[1]);
            cargarOrdenes(idCuenta);
            actualizarCostoCuenta();
            frInfoCuentas.setVisible(false);
            frCuenta.setVisible(true);
        }
       } catch (Exception e) {
          System.out.println("Error: "+e.getLocalizedMessage());
       }
    }

    public void limpiarInfoCuentas(FRInfoCuentas ventana) {
        ventana.getTxtAreaNotificaciones().setText("");
        ventana.getTxtNumeroPersonas().setText("");
        ventana.getTxtNombreCliente().setText("");
    }

    //-----------------------------FINAL DE CUENTAS-----------------------------//

    //-----------------------------INICIO DE ORDENES-----------------------------//

    public void rbFichaSeleccionada() {
        frOrden.getjLabel6().setEnabled(true);
        frOrden.getLsBailarinasOrden().setEnabled(true);
    }

    public void rbConsumoSeleccionado() {
        frOrden.getjLabel6().setEnabled(false);
        frOrden.getLsBailarinasOrden().setEnabled(false);
    }

    public void rbCortesiaSeleccionada() {
        frOrden.getjLabel6().setEnabled(false);
        frOrden.getLsBailarinasOrden().setEnabled(false);
    }

    public void agregarOrden() {
        String objetoSalonero = "";
        objetoSalonero = (String) frOrden.getLsSalonerosOrden().getSelectedValue();
        try {
            if (frOrden.getRbConsumo().isSelected() || frOrden.getRbCortesia().isSelected()) {
                if (!objetoSalonero.equals("")) {
                    String objetoSaloneroSplit[] = objetoSalonero.split("-");
                    int nSalonero = Integer.parseInt(objetoSaloneroSplit[0]);
                    int nBailarina = 0;
                    int activa = 1;
                    int nTipo = 0;
                    int nCuenta = Integer.parseInt(frCuenta.getLblNumFac().getText());
                    int nMesa = Integer.parseInt(frCuenta.getLblNumMesa().getText());
                    int nProducto = Integer.parseInt(frOrden.getLblNumProducto().getText());

                    if (frOrden.getRbConsumo().isSelected()) {
                        nTipo = 1;
                    } else {
                        nTipo = 2;
                    }
                    if (administrador.agregarOrden(nCuenta, nMesa, nProducto, nTipo, nSalonero, nBailarina, activa) ) {
                        frOrden.setVisible(false);
                        cargarOrdenes(nCuenta);
                        actualizarCostoCuenta();
                        // ORDEN AGREGADA
                    } else {
                        // ORDEN NO AGREGADA
                    }
                }
            } else if (frOrden.getRbFicha().isSelected()) {
                String objetoBailarina = "";
                objetoBailarina = (String) frOrden.getLsBailarinasOrden().getSelectedValue();
                if((objetoSalonero.equals("") == false) && (objetoBailarina.equals("") == false)){
                    String objetoSaloneroSplit[] = objetoSalonero.split("-");
                    String objetoBailarinaSplit[] = objetoBailarina.split("-");
                    int nSalonero = Integer.parseInt(objetoSaloneroSplit[0]);
                    int nBailarina = Integer.parseInt(objetoBailarinaSplit[0]);
                    int activa = 1;
                    int nTipo = 3;
                    int nCuenta = Integer.parseInt(frCuenta.getLblNumFac().getText());
                    int nMesa = Integer.parseInt(frCuenta.getLblNumMesa().getText());
                    int nProducto = Integer.parseInt(frOrden.getLblNumProducto().getText());

                    if (administrador.agregarOrden(nCuenta, nMesa, nProducto, nTipo, nSalonero, nBailarina, activa) ) {
                       cargarOrdenes(nCuenta);
                       actualizarCostoCuenta();
                       frOrden.setVisible(false);
                        // ORDEN AGREGADA
                    } else {
                        // ORDEN NO AGREGADA
                    }
                }
            }
       } catch (Exception e) {
           System.out.println("Error: "+e.getLocalizedMessage());
       }
    }

    public JPanel crearPanelOrden(String nombreProducto, String precioProducto, int cantidad, String comisionBailarina, int tipo, int codProducto){
        javax.swing.JPanel panel = new javax.swing.JPanel();
        panel.setBackground(new java.awt.Color(255, 255, 255));
        panel.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 2, true));
        panel.setLayout(null);

        javax.swing.JLabel lblCant = new javax.swing.JLabel();
        lblCant.setFont(new java.awt.Font("MS Reference Sans Serif", 0, 12));
        lblCant.setText(""+cantidad);
        panel.add(lblCant);
        lblCant.setBounds(10, 10, 17, 20);

        javax.swing.JLabel lblProd = new javax.swing.JLabel();
        lblProd.setFont(new java.awt.Font("MS Reference Sans Serif", 0, 12));
        lblProd.setText(nombreProducto);
        panel.add(lblProd);
        lblProd.setBounds(70, 10, 170, 18);

        javax.swing.JLabel lblPrecio = new javax.swing.JLabel();
        lblPrecio.setFont(new java.awt.Font("MS Reference Sans Serif", 0, 12));
        DecimalFormat df = new DecimalFormat("0.00");
        switch (tipo) {
            case 1:
                precioProducto = ""+df.format(((Double.parseDouble(precioProducto)*cantidad)*100)/123);
                lblPrecio.setText(precioProducto);
                lblProd.setText(nombreProducto);
                break;
            case 2:
                lblPrecio.setText("00.00");
                lblProd.setText(nombreProducto+" (Cor.)");
                break;
            case 3:
                lblProd.setText(nombreProducto);
                double precioMasComision = Double.parseDouble(precioProducto) + Double.parseDouble(comisionBailarina);
                precioMasComision = precioMasComision * cantidad;
                lblPrecio.setText("" + df.format(precioMasComision));
                break;
        }
        panel.add(lblPrecio);
        lblPrecio.setBounds(190, 10, 74, 16);

        javax.swing.JLabel lblSigno = new javax.swing.JLabel();
        lblSigno.setFont(new java.awt.Font("Verdana", 0, 14));
        lblSigno.setText("₡");
        panel.add(lblSigno);
        lblSigno.setBounds(180, 10, 20, 18);

        javax.swing.JLabel lblEquis = new javax.swing.JLabel();
        lblEquis.setFont(new java.awt.Font("Verdana", 0, 14));
        lblEquis.setForeground(new java.awt.Color(204, 0, 0));
        lblEquis.setText("X");
        lblEquis.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 255, 255), 1, true));
  

        javax.swing.JButton btnEliminar = new javax.swing.JButton();
        btnEliminar.setFont(new java.awt.Font("Tahoma", 0, 14));
        btnEliminar.setForeground(new java.awt.Color(255, 255, 255));
        btnEliminar.setBackground(new java.awt.Color(255, 255, 255));
        btnEliminar.setText("X-"+codProducto+"-"+tipo);
        btnEliminar.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 0, 0), 2, true));
        btnEliminar.add(lblEquis);
        lblEquis.setBounds(280, 10, 21, 21);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonEliminarOrdenActionPerformed(evt);
            }
        });
        panel.add(btnEliminar);
        btnEliminar.setBounds(280, 10, 21, 21);

        return panel;
      }

    public void cargarOrdenes(int idCuenta) {
        int tamano = administrador.cargarOrdenes(idCuenta);
        if(tamano > 0){
            asignarPaneles(tamano);
            generarPanelesOrdenes();
        }
    }

    private void botonEliminarOrdenActionPerformed(java.awt.event.ActionEvent evt) {
        String separaStrIgual[] = evt.toString().split("=");
        String separaStrComa[] = separaStrIgual[1].split(",");
        String separaStrGuion[] = separaStrComa[0].split("-");
        int idProducto = Integer.parseInt(separaStrGuion[1]);
        int tipo = Integer.parseInt(separaStrGuion[2]);
        if (administrador.eliminarOrden(idProducto, tipo)) {
            frCuenta.getPnlOrdenes().removeAll();
            cargarOrdenes(Integer.parseInt(frCuenta.getLblNumFac().getText()));
            actualizarCostoCuenta();
        } else {
            JOptionPane.showMessageDialog(null, "Ha ocurrido un error. Cuenta NO eliminada", "", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void asignarPaneles(int tamano) {
        javax.swing.JPanel paneles [] = new javax.swing.JPanel[tamano];
        for (int i = 0; i < paneles.length; i++) {
            String infoProducto [] = administrador.informacionProductoDeOrden(i);
            paneles[i] = crearPanelOrden(infoProducto[1], infoProducto[2], administrador.cantidadProductoEnCuenta(infoProducto[0], administrador.getTipoOrden(i)), infoProducto[3], administrador.getTipoOrden(i), Integer.parseInt(infoProducto[0]));
        }
        administrador.asignarPanelesOrdenes(paneles);
    }

    private void generarPanelesOrdenes() {
        frCuenta.getPnlOrdenes().removeAll();
        javax.swing.GroupLayout pnlOrdenesLayout = new javax.swing.GroupLayout(frCuenta.getPnlOrdenes());
        frCuenta.getPnlOrdenes().setLayout(pnlOrdenesLayout);
        ParallelGroup parallelGroupHorizontal = pnlOrdenesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        SequentialGroup sequentialGroupHorizontal = pnlOrdenesLayout.createSequentialGroup();
        sequentialGroupHorizontal.addGroup(administrador.parallelGroupHorizontalOrdenes(pnlOrdenesLayout));
        sequentialGroupHorizontal.addContainerGap(118, Short.MAX_VALUE);
        parallelGroupHorizontal.addGroup(sequentialGroupHorizontal);
        pnlOrdenesLayout.setHorizontalGroup(parallelGroupHorizontal);

        ParallelGroup parallelGroupVertical = pnlOrdenesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
        parallelGroupVertical.addGroup(administrador.parallelGroupVerticalOrdenes(pnlOrdenesLayout));
        pnlOrdenesLayout.setVerticalGroup(parallelGroupVertical);
    }

    public void frameCuentasOrdenes() {
        cargarCuentas(Integer.parseInt(frCuenta.getLblNumMesa().getText()));
        frCuenta.getPnlOrdenes().removeAll();
        frCuenta.setVisible(false);
        frInfoCuentas.setVisible(true);
    }

    public void actualizarCostoCuenta(){
        double subtotal = (administrador.sumarOrdenes()*100)/123;
        double impuestoVenta = subtotal*0.13;
        double impuestoServicio = subtotal*0.10;
        double descuento = 0;
        double total = (subtotal + impuestoVenta + impuestoServicio ) - descuento;
        DecimalFormat df = new DecimalFormat("0.00");
        frCuenta.getLblSubtotal().setText(""+df.format(subtotal));
        frCuenta.getLblImpuesto().setText(""+df.format(impuestoVenta));
        frCuenta.getLblImpServicio().setText(""+df.format(impuestoServicio));
        frCuenta.getLblTotal().setText(""+df.format(total));
        frCuenta.getLblDescuento().setText(""+df.format(descuento));
    }

    public void aplicarDescuento() {
        double porcentajeDescuento = Double.parseDouble(frCuenta.getSpnDescFac().getValue().toString());
        double subtotal = (administrador.sumarOrdenes()*100)/123;
        double impuestoVenta = subtotal*0.13;
        double impuestoServicio = subtotal*0.1;
        double total = (subtotal + impuestoVenta + impuestoServicio);
        double descuento = total*(porcentajeDescuento/100);
        total -= descuento;
        DecimalFormat df = new DecimalFormat("0.00");
        frCuenta.getLblSubtotal().setText(""+df.format(subtotal));
        frCuenta.getLblImpuesto().setText(""+df.format(impuestoVenta));
        frCuenta.getLblTotal().setText(""+df.format(total));
        frCuenta.getLblDescuento().setText(""+df.format(descuento));
    }

    public void cambiarCuentaDeMesa() {
        String objetoCuenta = "";
        objetoCuenta = (String) frInfoCuentas.getLsCuentasActivas().getSelectedValue();
        try{
        if (!objetoCuenta.equals("")) {
            String objetoSplit[] = objetoCuenta.split("-");
            int idCuenta = Integer.parseInt(objetoSplit[0]);
            int numMesaNueva = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el número de mesa a la que desea\ntransferir la cuenta #"+idCuenta+":\n", "", JOptionPane.INFORMATION_MESSAGE));
            if(administrador.mesaExiste(numMesaNueva)){
                if(administrador.transferirCuenta(numMesaNueva, idCuenta)){
                    cargarCuentas(Integer.parseInt(frInfoCuentas.getLblNoMesa().getText()));
                    JOptionPane.showMessageDialog(null, "Cuenta transferida satisfactoriamente.", "", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        }
       } catch (Exception e) {
           System.out.println("Error: "+e.getLocalizedMessage());
       }
    }

    public void facturar() {
        int nCuentaFacturar = Integer.parseInt(frCuenta.getLblNumFac().getText());
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        /**
         * Crear string con toda la info que se va imprimir
         **/
        String fechaCierre = sdf.format(cal.getTime());
        int res = administrador.facturar(nCuentaFacturar, fechaCierre);
        if(res == 1){
            JOptionPane.showMessageDialog(null, "Cuenta facturada satisfactoriamente. Imprimiendo factura..", "", JOptionPane.INFORMATION_MESSAGE);
            imprimirFactura(fechaCierre, false);
            administrador.guardarDescuento(Integer.parseInt(frCuenta.getLblNumFac().getText()), Double.parseDouble(frCuenta.getLblDescuento().getText()));
            cargarCuentas(Integer.parseInt(frCuenta.getLblNumMesa().getText()));
            frCuenta.getPnlOrdenes().removeAll();
            frCuenta.setVisible(false);
            frInfoCuentas.setVisible(true);
        } else{
            if(res == 2)
                JOptionPane.showMessageDialog(null, "No se puede facturar porque no hay ordenes", "", JOptionPane.ERROR_MESSAGE);
            else
                JOptionPane.showMessageDialog(null, "Ha ocurrido un error. Cuenta no puede ser facturada", "", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void prefacturar(){
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fechaCierre = sdf.format(cal.getTime());
        imprimirFactura(fechaCierre, true);
    }

    public void realizarCierre (){
        String [] options = {"Sí","No"};
        if(JOptionPane.showOptionDialog(null,"¿Desea hacer el cierre para el día de hoy?","",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE,null,options,null)== 0)
        {
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String fechaCierre = sdf.format(cal.getTime());
            String [] textoArriba = new String[6];
            textoArriba [0] = "Bar y Restaurante Nicole";
            textoArriba [1] = "Control de caja diaria";
            textoArriba [2] = "Fecha: "+fechaCierre;
            textoArriba [3] = "";
            textoArriba [4] = "Cant.  Descripción              Monto";
            textoArriba [5] = "-----------------------------------------";

            String [] textoProductosCierre = administrador.textoProductosCierre(fechaCierre);

            String [] textoAbajo = administrador.textoAbajoCierre();

            administrador.imprimirFactura(textoArriba, textoProductosCierre, textoAbajo);
        }
    }

    private void imprimirFactura(String fechaCierre, boolean prefactura) {

        String formaDePago = "";
        if(!prefactura)
        {
        String [] options = {"Contado", "Tarjeta"};
        if(JOptionPane.showOptionDialog(null, "", "", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, null)==0)
            formaDePago = options[0];
        else
            formaDePago = options [1];
        }

        String [] textoArriba = new String[14];
        textoArriba [0] = "Bar y Restaurante Nicole";
        textoArriba [1] = "Teléfono: 2222-2175 ";
        textoArriba [2] = "De la entrada al Museo de Niños 25 este";
        textoArriba [3] = "Av.9, Calle 2 y 4, San José";
        textoArriba [4] = "Ced. Jurídica: 3-101-182439";
        textoArriba [5] = "Fecha de autorización 26/09/97";
        textoArriba [6] = "Fecha: "+fechaCierre;
        textoArriba [7] = "Factura #"+frCuenta.getLblNumFac().getText();
        textoArriba [8] = "Mesa #"+frCuenta.getLblNumMesa().getText();
        textoArriba [9] = "Cliente: "+frCuenta.getLblCliente().getText();
        textoArriba [10] = "Forma  de pago: "+formaDePago;
        textoArriba [11] = "";
        textoArriba [12] = "Cant.  Descripción              Monto";
        textoArriba [13] = "-----------------------------------------";

        String [] textoOrdenes = administrador.textoOrdenes();
        
        String [] textoAbajo = new String [6];

        DecimalFormat df = new DecimalFormat("0.00");
        textoAbajo [0] = "";//ESPACIO PARA SEPARARLO DE LOS PRODUCTOS
        textoAbajo [1] = "Subtotal = "+df.format(Double.parseDouble(frCuenta.getLblSubtotal().getText()));
        textoAbajo [2] = "I.V. = "+df.format(Double.parseDouble(frCuenta.getLblImpuesto().getText()));
        textoAbajo [3] = "10% Servicio = "+df.format(Double.parseDouble(frCuenta.getLblImpServicio().getText()));
        textoAbajo [4] = "Descuento = "+df.format(Double.parseDouble(frCuenta.getLblDescuento().getText()));
        textoAbajo [5] = "Total = "+df.format(Double.parseDouble(frCuenta.getLblTotal().getText()));

        administrador.imprimirFactura(textoArriba, textoOrdenes, textoAbajo);

    }

    //-----------------------------FINAL DE ORDENES-----------------------------//

    //-----------------------------INICIO DE METODOS INTERNOS-----------------------------//

    public void cargarReporte()
    {
        ResultSetTable table = new ResultSetTable(frReportes.getTblResults());
        Calendar calendario = GregorianCalendar.getInstance();
        Date fecha = calendario.getTime();
        System.out.println(fecha);
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat(DATE_FORMAT_NOW);
        System.out.println(formatoDeFecha.format(fecha));
        String now = now();
        try {
                fecha = formatoDeFecha.parse(now);
                System.out.println(now);
                table.DataSource(administrador.getReport(frReportes.getlblIDReporte().getText(), fecha, fecha));
                table.DataBind();
            }catch (ParseException ex) {
                ex.printStackTrace();
                System.out.println(ex.getMessage());
            }
    }

    public void cargarReporte(String idReporte, Date desde, Date hasta)
    {
        ResultSetTable table = new ResultSetTable(frReportes.getTblResults());
        try{
            table.DataSource(administrador.getReport(frReportes.getlblIDReporte().getText(), desde, hasta));
            table.DataBind();
        }catch(Exception ex)
        {
            System.out.println(ex.getMessage());
        }
    }

    private String now() {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
        return sdf.format(cal.getTime());
    }

    public void frameReportes() {
        frReportes.setVisible(true);
        frPrincipal.setVisible(false);
    }

    public void framePrincipalReportes() {
        frReportes.setVisible(false);
        frPrincipal.setVisible(true);
    }
    //-----------------------------FIN DE METODOS INTERNOS-----------------------------//
}
